/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package entidades;

import entidades.Enumeraciones.EstadoCivil;
import java.io.Serializable;
import java.util.Calendar;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author Felipe
 */
@Entity
@Table (name = "DATOS_PERSONALES")
public class DatosPersonales implements Serializable
{
    @Id
    @Column (name = "ID_DATOS_PERSONALES")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;
    
    @OneToOne (cascade = CascadeType.ALL)
    @JoinColumn (name = "IDENTIFICACION")
    private Identificacion identificacion;
    
    @JoinColumn (name = "CONTACTO")
    @OneToOne (cascade = CascadeType.ALL)
    private Contacto contacto;
    
    @Temporal(TemporalType.DATE)
    @Column (name = "FECHA_NACIMIENTO")
    private Calendar fechaNacimiento;
    
    @Column (name = "LUGAR_NACIMIENTO")
    private String lugarNacimiento;
    
    @Enumerated (EnumType.STRING)
    @Column (name = "ESTADO_CIVIL")
    private EstadoCivil estadoCivil;
    
    @Lob
    @Column (name = "IMAGEN")
    //@JsonIgnore
    private byte[] imagen;
    
    @ManyToOne (cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH})
    @JoinColumn (name = "TUTOR")
    private Tutor tutor;
    
    public DatosPersonales ()
    {
        
    }

    public DatosPersonales(Calendar fechaNacimiento, String lugarNacimiento, EstadoCivil estadoCivil, Contacto contacto, Identificacion identificacion, byte[] imagen)
    {
        this.fechaNacimiento = fechaNacimiento;
        this.lugarNacimiento = lugarNacimiento;
        this.estadoCivil = estadoCivil;
        this.contacto = contacto;
        this.imagen = imagen;
    }

    public long getId()
    {
        return id;
    }

    public void setId(long id)
    {
        this.id = id;
    }

    public Calendar getFechaNacimiento()
    {
        return fechaNacimiento;
    }

    public void setFechaNacimiento(Calendar fechaNacimiento)
    {
        this.fechaNacimiento = fechaNacimiento;
    }

    public String getLugarNacimiento()
    {
        return lugarNacimiento;
    }

    public void setLugarNacimiento(String lugarNacimiento)
    {
        this.lugarNacimiento = lugarNacimiento;
    }

    public EstadoCivil getEstadoCivil()
    {
        return estadoCivil;
    }

    public void setEstadoCivil(EstadoCivil estadoCivil)
    {
        this.estadoCivil = estadoCivil;
    }

    public Contacto getContacto()
    {
        return contacto;
    }

    public void setContacto(Contacto contacto)
    {
        this.contacto = contacto;
    }
    
    public Identificacion getIdentificacion ()
    {
        return identificacion;
    }
    
    public void setIdentificacion (Identificacion identificacion)
    {
        this.identificacion = identificacion;
    }

    public byte[] getImagen()
    {
        return imagen;
    }

    public void setImagen(byte[] imagen)
    {
        this.imagen = imagen;
    }

    public Tutor getTutor()
    {
        return tutor;
    }

    public void setTutor(Tutor tutor)
    {
        this.tutor = tutor;
    }
    
    @Override
    public String toString ()
    {
        return identificacion.toString();
    }
}
